' ****** START INCLUDE Rgba Core:::RgbaBox(x1%, y1%, x2%, y2%, c&, a%b) ****** DIM r0%, g0%, b0%, a0%, r1%, g1%, b1%, a1% SUB SetRgb0(x%,y%) DIM c$ c$ = RIGHT$("000000" + HEX$(POINT(x%,y%)), 6) r0% = VAL("0x" + LEFT$(c$,2)) g0% = VAL("0x" + MID$(c$,3,2)) b0% = VAL("0x" + RIGHT$(c$,2)) END SUB SUB SetRgb1(c&,a%b) DIM c$ c$ = RIGHT$("000000" + HEX$(c&), 6) r1% = VAL("0x" + LEFT$(c$,2)) g1% = VAL("0x" + MID$(c$,3,2)) b1% = VAL("0x" + RIGHT$(c$,2)) a0% = 255 - a%b a1% = a%b END SUB SUB RgbaCorePset(x%,y%) PSET(x%,y%), _RGB( [{ (r0%*a0%)+(r1%*a1%) }/255], [{ (g0%*a0%)+(g1%*a1%) }/255], [{ (b0%*a0%)+(b1%*a1%) }/255] ) END SUB Sub RgbaBox (x1%, y1%, x2%, y2%, c&, a%b) xd% = ABS(x2% - x1%) yd% = ABS(y2% - y1%) SetRgb1(c&, a%b) IF xd% = 0 THEN FOR i = MIN(y1%,y2%) to MAX(y1%,y2%): SetRgb0(x1%,i) : RgbaCorePset(x1%,i) : NEXT i ELSEIF yd% = 0 THEN FOR i = MIN(y1%,y2%) to MAX(y1%,y2%): SetRgb0(x1%,i) : RgbaCorePset(x1%,i) : NEXT i ELSE FOR x% = MIN(x1%,x2%) to MAX(x1%,x2%) FOR y% = MIN(y1%,y2%) to MAX(y1%,y2%) SetRgb0(x%,y%) : RgbaCorePset(x%,y%) NEXT y% NEXT x% END IF End Sub ' ****** END INCLUDE Rgba Core:::RgbaBox(x1%, y1%, x2%, y2%, c&, a%b) ****** ' BASIC Anywhere Machine program by Charlie Veniot to test RbgaBox library function in development version of BAM ' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.29.21.34]) on 2023.09.09 at 15:35 (Coordinated Universal Time) SCREEN _NEWIMAGE(400,400, 27) â–¶StartIteration: x% = INT(RND*180) + 20 y% = INT(RND*180) + 20 FOR i = 0 to INT(RND*15) + 6 colour& = INT(RND * &hFFFFFF) + 1 alpha% = INT( RND * 100 ) RgbaBox(x% - i,y% - i,x% + i,y% + i, colour&, alpha%) RgbaBox(400 - x% - i,y% - i,400 - x% + i,y% + i, colour&, alpha%) RgbaBox(x% - i,400 - y% - i,x% + i,400 - y% + i, colour&, alpha%) RgbaBox(400 - x% - i,400 - y% - i,400 - x% + i,400 - y% + i, colour&, alpha%) _DELAY 0.1 NEXT i GOTO â–¶StartIteration